The invention relates to the field of computer networks and in particular, to that of caching services for a computer network. More specifically, a caching service for use on the World Wide Web is disclosed which can improve user response times and reduce the amount of data transmitted over the Web.
Caching has been used as a technology to improve user response time and to decrease network bandwidth utilization for distributed applications 10 such as web browsing. In the context of the World Wide Web, it is common to deploy caching services to improve the response time to users and to reduce the amount of data that is transmitted over the Web. The user invokes a browser program to retrieve data from the server in the network. A Uniform Resource Locator or URL identifies the address of the source of the data. Without an intervening cache, the request goes directly to the server, and the server returns the desired information.
When a cache is used in a network, a request for information is first sent to the cache. If the cache contains the desired information it is returned to the client. If the requested information is not found in the cache, the catch retrieves the information from the server and returns the information to the client. The cache will also store a copy of the information locally. Since the local storage of the cache is limited only a small portion of all possible information can maintain locally. Caches may implement various techniques to decide which information is maintained and which is discarded. A very common technique is the least recently used scheme, in which the URL information, which has not been accessed for the longest amount of time, is replaced by the new URL information being accessed. An overview of different caching schemes can be found in the document Aggarwal, C., et al., Caching on the World Wide Web, IEEE Transactions on Knowledge and Data Engineering, Vol. 11, No. 1 January/February 1999, pp. 94-107.
There are two common modes for web caching: client proxy caches and transparent caches. In a client proxy cache, the browser is typically configured to send a request for information directly to the cache rather than the server. A transparent cache works like a proxy cache except that the browser need not be configured to send a request to the transparent cache. A transparent cache detects the packets belonging to the web-application by looking at information in the request such as the port number carried in IP packets (Web applications usually carry a port number of 80). The transparent cache then direct packets to the cache.
In some variants of the caching architecture, multiple caches can be deployed in the network. In one example, the proxy uses a static hashing of the URL to determine which cache should receive the request. Different caches can also be arranged in a hierarchy. The browser sends the request to a first cache. If the first cache does not find the URL information locally, the request is sent to a second cache. The second cache can send to a third cache, when the final cache is reached the request is sent to the server. The topology in which caching occurs is usually configurable. An algorithm for static hashing is CARP, or Cache Array Routing Protocol described in Ross, K., Hash Routing for Collections of Shared Web Caches, IEEE, Network, November/December 1997, pp. 37-44.
Although caching in the web has been researched extensively, the effectiveness of the caches has been found to be relatively poor. Usually, the probability that a web page is found in the local cache is less than half, possibly around 35-40%. Thus, more than half of the requests result in a cache miss, i.e., they are not found in the cache.
The cache miss factor is high due to a variety of reasons. Many of the URLs, associated with pages which browsers attempt to access, identify data that is dynamic (e.g., a program to be executed at a server commonly called cgi-bin scripts). Some URLs identify information that is highly specific to the user (e.g., uses a cookie or creates a special identifier for the user). Some URLs identify special programs like a video or audio clip that need special handling or special protocols between the client and the server, and cannot be handled by an intervening cache.
Each cache miss adds extra latency to the packet request, which degrades the performance perceived by the browser. Since more than half of the requests result in a cache miss, traditional caching is more likely to result in degraded user performance than improved response time.
Figure 1 illustrates the different components that interact together to implement a prior art caching system. Within this caching system, a client 101 wishes to access a URL that identifies some information located at server 111. The client 101 initially contacts a cache 105. The cache 105 is connected to the client 101 by a network 113. Typically, the network 113 is a campus network or fast local area network. The cache 105 serves multiple clients that are present on the network 113, e.g., another client 103 in the network may access the same cache. The cache 105 connects to the server 111 via a network 107. Typically, network 113 is faster than network 107, so that response time is improved every time there is a hit in the cache. The cache 105 may coordinate caching with other caches in the network, i.e., cache 109 in the network.
In order to improve the caching behavior, a system of multiple proxying caches may be deployed. In addition, special caching servers, that can provide caching techniques that work with cookies or provide a specialized protocol for caching video and audio clips can be added to the network. While there are several caching architectures for interconnecting a multiple number of caches, most do not perform well due to a poor cache hit ratio. Plus, the number of proxying mechanisms deployed in the network adds additional latency in the caching architecture, and usually degrades the performance of the network, rather than improving it.
A policy enabled caching system based upon policy rules which define whether a request from a client is directed to a cache or a server. The client is coupled to a plurality of caches and to at least one server. The caches may store a subset of the data stored on the server.
The policy enabled caching system stores policy rules which comprise at least one matching condition, where every request containing a matching condition falls into an associated class. Each class will have an associated routing rule, where a routing rule defines the type of routing for all the requests which fall into that class.
The policy enabled caching system will receive the request from the client and classify the request according to the policy rules. The request is then routed according to the routing rule associated with the class to which the request belongs.